import Vue from 'vue'

import 'normalize.css/normalize.css' // A modern alternative to CSS resets

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import locale from 'element-ui/lib/locale/lang/en' // lang i18n

import '@/styles/index.scss' // global css
import * as filter1 from '@/filters'
import * as filter12 from '@/filters/storeerin'
import App from './App'
import store from './store'
import router from './router'

import '@/icons' // icon
import '@/permission' // permission control

// 导入自定义指令的钩子函数
// import {} from '@/directives' // 如果这样写的话，那么出现100个的时候，我们需要填写100个，并且注册100个， 用更好的放过 * as 重命名
import * as directives from '@/directives'

// 导入百度地图
// import BaiduMap from 'vue-baidu-map'
// Vue.use(BaiduMap, {
//   ak: 'XOGNyENuwIo7BPitNCwPeRvFxHmbKq5q' // 这个地方是官方提供的ak密钥
// })

// 事件总线
Vue.prototype.$EventBus = new Vue()

// 导入自定义组件
import component from '@/components'
Vue.use(component)

const filter = { ...filter1, ...filter12 }
Object.keys(filter).forEach(key => {
  Vue.filter(key, filter[key]) // 注册自定义过滤器
})
// set ElementUI lang to EN
Vue.use(ElementUI, { locale })
// 如果想要中文版 element-ui，按如下方式声明
// Vue.use(ElementUI)

// 遍历出所有的对象，然后注册她们
// console.log(directives) // directives：所有钩子函数的对象
// const direct = Object.keys(directives) // 对象的方法，将所有的键组成一个数组
Object.keys(directives).forEach(key => {
  // Vue.directive('指令名称', '钩子函数)'
  Vue.directive(key, directives[key])
})

Vue.config.productionTip = false

new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})
